## [1] "C:/Users/jonat/OneDrive - Oregon Health & Science University/Nelson Lab/Bioinformatics/Nelson/JGA Dissection"
The goal of this file is to compare the transcriptional profile of our Contractile cell dataset (INTACT) with Humphrey’s (DKD) as well as creating figures accordingly.
Th
SO.DKD <- readRDS(here("Datasets","DKD_JGA_2.rds"))
SO.DKD@meta.data$class.JGA <- factor(SO.DKD@meta.data$class.JGA, levels = c("Pericyte", "Efferent VSMC", "Afferent VSMC", "Granular Cell", "EG Mesangial Cell", "IG Mesangial Cell"))
Idents(SO.DKD) <- SO.DKD@meta.data$class.JGA
DimPlot(SO.DKD, group.by = "class.JGA")markers_result <- list()
clusters <- unique(SO.INTACT$class.JGA)
for (i in clusters) {
# Replace spaces with underscores in cluster names
clean_name <- gsub(" ", "_", i)
# Find markers for the cluster
markers <- FindMarkers(SO.INTACT, ident.1 = i, group.by = "class.JGA", min.pct = 0.1, logfc.threshold = 0.25)
markers <- markers %>%
rownames_to_column(var = "gene") %>%
arrange(desc(avg_log2FC))
markers_result[[clean_name]] <- markers
# Create variable name without spaces
var_name <- paste0(clean_name, ".INTACT.markers")
assign(var_name, markers, envir = .GlobalEnv)
}markers_result <- list()
clusters <- unique(SO.DKD$class.JGA)
for (i in clusters) {
clean_name <- gsub(" ", "_", i)
markers <- FindMarkers(SO.DKD, ident.1 = i, group.by = "class.JGA", min.pct = 0.1, logfc.threshold = 0.25)
markers <- markers %>%
rownames_to_column(var = "gene") %>%
arrange(desc(avg_log2FC))
markers_result[[clean_name]] <- markers
var_name <- paste0(clean_name, ".DKD.markers")
assign(var_name, markers, envir = .GlobalEnv)
}INTACT_list <- list(`Pericyte.INTACT.markers`, `Granular_Cell.INTACT.markers`, `Efferent_VSMC.INTACT.markers`, `Afferent_VSMC.INTACT.markers`, `IG_Mesangial_Cell.INTACT.markers`, `EG_Mesangial_Cell.INTACT.markers`)
DKD_list <- list(`Pericyte.DKD.markers`, `Granular_Cell.DKD.markers`, `Efferent_VSMC.DKD.markers`, `Afferent_VSMC.DKD.markers`, `IG_Mesangial_Cell.DKD.markers`, `EG_Mesangial_Cell.DKD.markers`)
names(INTACT_list) <- c("Pericyte.INTACT.markers", "Granular Cell.INTACT.markers", "Efferent VSMC.INTACT.markers", "Afferent VSMC.INTACT.markers", "IG_Mesangial_Cell.INTACT.markers", "EG_Mesangial_Cell.INTACT.markers")
names(DKD_list) <- c("Pericyte.DKD.markers", "Granular Cell.DKD.markers", "Efferent VSMC.DKD.markers", "Afferent VSMC.DKD.markers", "IG_Mesangial_Cell.DKD.markers", "EG_Mesangial_Cell.DKD.markers")library(dplyr)
library(ggplot2)
library(ggrepel)
library(broom)
# Initialize table for storing R-squared values and slopes
rsq_table <- data.frame(matrix(ncol = 7, nrow = (length(INTACT_list) * length(DKD_list))))
names(rsq_table) <- c("INTACT", "DKD", "R-squared", "Slope", "Shared_DEGs", "INTACT_UniqueDEGs", "DKD_UniqueDEGs")
# List to store scatterplots
scatterplots <- list()
## START FOR {LOOP} LEVEL 1 ##
for (i in 1:length(INTACT_list)) {
x.markers <- INTACT_list[[i]]
x.markers_tb <- x.markers %>%
data.frame() %>%
as_tibble()
## START FOR {LOOP} LEVEL 2 ##
for (j in 1:length(DKD_list)) {
y.markers <- DKD_list[[j]]
y.markers_tb <- y.markers %>%
data.frame() %>%
as_tibble()
# X-Y DEGs Intersection Table
xy.comp <- inner_join(x.markers_tb, y.markers_tb, by = "gene")
# Ensure enough genes exist for regression
if(nrow(xy.comp) > 1) {
# Selecting only relevant columns
xy.comp.R2 <- xy.comp %>%
dplyr::select(avg_log2FC.x, avg_log2FC.y)
# Correct regression model
model <- lm(avg_log2FC.y ~ avg_log2FC.x, data = xy.comp.R2)
# Extract slope and correct R² calculation
slope <- coef(model)["avg_log2FC.x"]
n_rsq <- summary(model)$r.squared
} else {
slope <- NA
n_rsq <- NA # Not enough data for a valid regression
}
# Calculate DEGs counts
Shared_DEGs <- nrow(xy.comp)
INTACT_UniqueDEGs <- nrow(x.markers_tb) - Shared_DEGs
DKD_UniqueDEGs <- nrow(y.markers_tb) - Shared_DEGs
# Add to R-squared table
index <- ((i-1) * length(DKD_list)) + j
rsq_table[index, 1] = names(INTACT_list)[i]
rsq_table[index, 2] = names(DKD_list)[j]
rsq_table[index, 3] = n_rsq
rsq_table[index, 4] = slope # Adding the slope to the table
rsq_table[index, 5] = Shared_DEGs
rsq_table[index, 6] = INTACT_UniqueDEGs
rsq_table[index, 7] = DKD_UniqueDEGs
# Generate Scatterplot for each pair
p <- ggplot(xy.comp, aes(x = avg_log2FC.x, y = avg_log2FC.y, label = gene)) +
geom_point(color = "#636EFA", alpha = 0.6, size = 2.5) + # Blue dots with transparency
geom_smooth(method = "lm", color = "#1E90FF", linetype = "dashed", se = FALSE) + # Best-fit regression line
geom_text_repel(size = 4, segment.size = 0.2, segment.color = "grey50") + # Gene labels
annotate("text", x = min(xy.comp$avg_log2FC.x) + 0.2,
y = max(xy.comp$avg_log2FC.y) - 0.2,
label = paste0("R² = ", round(n_rsq, 3), "\nSlope = ", round(slope, 3)),
color = "black", size = 6, hjust = 0) +
labs(
title = paste(names(INTACT_list)[i], "vs", names(DKD_list)[j]),
x = paste("avg_log2FC -", names(INTACT_list)[i]),
y = paste("avg_log2FC -", names(DKD_list)[j])
) +
theme_minimal(base_size = 14) +
theme(
plot.title = element_text(hjust = 0.5, face = "bold"),
axis.title = element_text(face = "bold"),
axis.line = element_line(color = "black", size = 1),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank()
)
# Store the plot
scatterplots[[paste(names(INTACT_list)[i], names(DKD_list)[j], sep = "_vs_")]] <- p
}
}
# Sort and print the R-squared table
rsq_table <- rsq_table %>%
arrange(desc(`R-squared`))
print(rsq_table)## INTACT DKD R-squared
## 1 EG_Mesangial_Cell.INTACT.markers EG_Mesangial_Cell.DKD.markers 0.871103144
## 2 Afferent VSMC.INTACT.markers Afferent VSMC.DKD.markers 0.831108036
## 3 Pericyte.INTACT.markers Pericyte.DKD.markers 0.819735997
## 4 Granular Cell.INTACT.markers Granular Cell.DKD.markers 0.803212088
## 5 IG_Mesangial_Cell.INTACT.markers IG_Mesangial_Cell.DKD.markers 0.790047831
## 6 Efferent VSMC.INTACT.markers Efferent VSMC.DKD.markers 0.740028411
## 7 EG_Mesangial_Cell.INTACT.markers Efferent VSMC.DKD.markers 0.668672011
## 8 Granular Cell.INTACT.markers Pericyte.DKD.markers 0.572604083
## 9 IG_Mesangial_Cell.INTACT.markers EG_Mesangial_Cell.DKD.markers 0.557736118
## 10 IG_Mesangial_Cell.INTACT.markers Efferent VSMC.DKD.markers 0.506863175
## 11 Efferent VSMC.INTACT.markers Afferent VSMC.DKD.markers 0.487814621
## 12 EG_Mesangial_Cell.INTACT.markers IG_Mesangial_Cell.DKD.markers 0.457213186
## 13 EG_Mesangial_Cell.INTACT.markers Pericyte.DKD.markers 0.425512588
## 14 Afferent VSMC.INTACT.markers Pericyte.DKD.markers 0.387082095
## 15 EG_Mesangial_Cell.INTACT.markers Afferent VSMC.DKD.markers 0.353406675
## 16 IG_Mesangial_Cell.INTACT.markers Pericyte.DKD.markers 0.287329245
## 17 Efferent VSMC.INTACT.markers EG_Mesangial_Cell.DKD.markers 0.262102769
## 18 Pericyte.INTACT.markers Afferent VSMC.DKD.markers 0.261196606
## 19 Pericyte.INTACT.markers Granular Cell.DKD.markers 0.241584735
## 20 Efferent VSMC.INTACT.markers IG_Mesangial_Cell.DKD.markers 0.238386314
## 21 Afferent VSMC.INTACT.markers Efferent VSMC.DKD.markers 0.225720449
## 22 IG_Mesangial_Cell.INTACT.markers Afferent VSMC.DKD.markers 0.224455302
## 23 Afferent VSMC.INTACT.markers IG_Mesangial_Cell.DKD.markers 0.140584991
## 24 IG_Mesangial_Cell.INTACT.markers Granular Cell.DKD.markers 0.129146376
## 25 Afferent VSMC.INTACT.markers Granular Cell.DKD.markers 0.120158331
## 26 Afferent VSMC.INTACT.markers EG_Mesangial_Cell.DKD.markers 0.114777945
## 27 Efferent VSMC.INTACT.markers Granular Cell.DKD.markers 0.107575604
## 28 Granular Cell.INTACT.markers EG_Mesangial_Cell.DKD.markers 0.099035788
## 29 Pericyte.INTACT.markers EG_Mesangial_Cell.DKD.markers 0.051841561
## 30 Granular Cell.INTACT.markers Efferent VSMC.DKD.markers 0.045815585
## 31 EG_Mesangial_Cell.INTACT.markers Granular Cell.DKD.markers 0.044447753
## 32 Efferent VSMC.INTACT.markers Pericyte.DKD.markers 0.037701620
## 33 Granular Cell.INTACT.markers Afferent VSMC.DKD.markers 0.033103424
## 34 Granular Cell.INTACT.markers IG_Mesangial_Cell.DKD.markers 0.019218548
## 35 Pericyte.INTACT.markers IG_Mesangial_Cell.DKD.markers 0.011062189
## 36 Pericyte.INTACT.markers Efferent VSMC.DKD.markers 0.002267001
## Slope Shared_DEGs INTACT_UniqueDEGs DKD_UniqueDEGs
## 1 0.64593200 204 362 42
## 2 0.70783676 287 341 72
## 3 0.71401987 202 277 52
## 4 0.61906713 123 295 47
## 5 0.63214061 271 406 64
## 6 0.98000380 158 164 112
## 7 -0.55062972 197 369 73
## 8 -0.63758145 163 255 91
## 9 0.51479711 172 505 74
## 10 -0.46010826 193 484 77
## 11 0.95219681 150 172 209
## 12 0.50500260 199 367 136
## 13 -0.43600727 177 389 77
## 14 -0.43483557 183 445 71
## 15 -0.45347778 203 363 156
## 16 -0.35500413 174 503 80
## 17 -0.60172637 121 201 125
## 18 -0.49057073 222 257 137
## 19 -0.36132974 107 372 63
## 20 -0.58295270 132 190 203
## 21 0.35584419 167 461 103
## 22 -0.34999748 223 454 136
## 23 -0.29142463 185 443 150
## 24 -0.20509699 117 560 53
## 25 0.22736398 115 513 55
## 26 -0.23841491 163 465 83
## 27 0.38830168 85 237 85
## 28 0.27007920 114 304 132
## 29 -0.19738412 151 328 95
## 30 -0.18095187 126 292 144
## 31 -0.13125073 114 452 56
## 32 -0.22216557 136 186 118
## 33 0.16305872 150 268 209
## 34 -0.13001383 136 282 199
## 35 -0.10447415 165 314 170
## 36 0.04213346 153 326 117
# Display all scatterplots
for (plot_name in names(scatterplots)) {
print(scatterplots[[plot_name]])
}df <- rsq_table %>%
dplyr::select(INTACT, DKD, "R-squared") %>%
mutate(INTACT = sub("_Named_", " ", INTACT)) %>%
mutate(DKD = sub("_Named_", " ", DKD)) %>%
pivot_wider(names_from = DKD, values_from = "R-squared") %>%
column_to_rownames(var = "INTACT") %>%
as.matrix()
library(corrplot)
## Correlation Plot
corrplot(df, method = 'color')p1 <- DimPlot(SO.DKD) +
ylab("UMAP 2") +
xlab("UMAP 1") +
theme_classic() +
theme(
plot.title = element_text(hjust = 0.5, size = 20),
axis.line = element_line(size = 1, colour = "black"),
axis.text = element_blank(), # Remove axis text
axis.ticks = element_blank(), # Optional: Remove axis ticks
text = element_text(size = 20)
) + ggtitle("UMAP - DKD Contractile Clusters")
p2 <- DimPlot(SO.INTACT, reduction = "umap", group.by = "class.JGA") +
ylab("UMAP 2") +
xlab("UMAP 1") +
theme_classic() +
theme(
plot.title = element_text(hjust = 0.5, size = 20),
axis.line = element_line(size = 1, colour = "black"),
axis.text = element_blank(), # Remove axis text
axis.ticks = element_blank(), # Optional: Remove axis ticks
text = element_text(size = 20)
) + ggtitle("UMAP - INTACT Contractile Clusters")
print(p1)library(patchwork)
library(ggplot2)
library(patchwork)
Idents(SO.DKD) <- SO.DKD@meta.data$class.JGA
Idents(SO.INTACT) <- SO.INTACT@meta.data$class.JGA
Idents(SO.DKD) <- SO.DKD@meta.data$class.JGA
Idents(SO.INTACT) <- SO.INTACT@meta.data$class.JGA
markers.to.plot <- c("Nkain2",
"Col23a1", # Adora1 didn't look good
"Ren1",
"Hpse2",
"Tenm2",
"Tshz2")
#cluster_order <- c("Pericyte", "Efferent VSMC", "Afferent VSMC", "Granular Cell", "EG Mesangial Cell", "IG Mesangial Cell")
#SO.DKD@meta.data$class.JGA <- factor(SO.DKD@meta.data$class.JGA, levels = cluster_order)
p3 <- DotPlot(SO.DKD, features = markers.to.plot) +
coord_flip() +
ggtitle("Gene Expression Across Clusters - DKD") +
xlab("Clusters") + ylab("Marker Genes") +
theme(axis.text.x = element_text(angle = 45, hjust = 1),
plot.title = element_text(size = 14, face = "bold", hjust = 0.5))
p4 <- DotPlot(SO.INTACT, features = markers.to.plot) +
coord_flip() +
ggtitle("Gene Expression Across Clusters - INTACT") +
xlab("Clusters") + ylab("Marker Genes") +
theme(axis.text.x = element_text(angle = 45, hjust = 1),
plot.title = element_text(size = 14, face = "bold", hjust = 0.5))
p3xy.comp <- inner_join(Pericyte.INTACT.markers, Pericyte.DKD.markers, by = "gene")
df.upper <- subset(xy.comp, avg_log2FC.x > 1 & avg_log2FC.y > 1)
df.lower <- subset(xy.comp, avg_log2FC.x < -1 & avg_log2FC.y < -1)
model <- lm(avg_log2FC.y ~ avg_log2FC.x, data = xy.comp)
slope <- coef(model)["avg_log2FC.x"]
r_squared <- summary(model)$r.squared
library(ggplot2)
library(ggrepel)
xy.comp <- inner_join(IG_Mesangial_Cell.INTACT.markers, IG_Mesangial_Cell.DKD.markers, by = "gene")
p5 <- ggplot(xy.comp, aes(x = avg_log2FC.x, y = avg_log2FC.y, label = gene)) +
geom_point(color = "#636EFA", alpha = 0.6, size = 2.5) +
geom_point(data = df.upper, color = "#EF553B", size = 3.5) +
geom_point(data = df.lower, color = "#00CC96", size = 3.5) +
geom_smooth(method = "lm", color = "#1E90FF", linetype = "dashed", se = FALSE) +
geom_text_repel(data = rbind(df.upper, df.lower), segment.size = 0.2, segment.color = "grey50",
size = 5) +
annotate("text", x = min(xy.comp$avg_log2FC.x) + 0.2,
y = max(xy.comp$avg_log2FC.y) - 0.2,
label = paste0("R² = ", round(r_squared, 3), "\nSlope = ", round(slope, 3)),
color = "black", size = 6, hjust = 0) +
labs(
title = "Intraglomerular Mesangial Gene Expression: INTACT vs DKD",
x = "Average log2FC - INTACT IG Mesangial",
y = "Average log2FC - DKD IG Mesangial"
) +
theme_minimal(base_size = 16) +
theme(
plot.title = element_text(hjust = 0.5, face = "bold"),
axis.title = element_text(face = "bold"),
axis.line = element_line(color = "black", size = 1),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank()
)
p5library(dplyr)
library(tidyr)
library(ggplot2)
library(reshape2)
library(RColorBrewer)
rsq_table <- rsq_table %>%
mutate(
INTACT = gsub("\\.", " ", INTACT),
DKD = gsub("\\.", " ", DKD),
INTACT = gsub("INTACT markers", "", INTACT),
DKD = gsub("DKD markers", "", DKD),
INTACT = gsub("_", " ", INTACT),
DKD = gsub("_", " ", DKD)
)
df <- rsq_table %>%
dplyr::select(INTACT, DKD, `R-squared`) %>%
pivot_wider(names_from = DKD, values_from = `R-squared`) %>%
column_to_rownames(var = "INTACT") %>%
as.matrix()
cor_long <- melt(df)
p6 <- ggplot(cor_long, aes(x = Var1, y = Var2, fill = value)) +
geom_tile(color = "white", size = 0.3) +
geom_text(aes(label = sprintf("%.2f", value)), size = 5, fontface = "bold",
color = ifelse(cor_long$value > 0.5, "white", "black")) +
scale_fill_gradientn(colors = rev(brewer.pal(9, "RdBu")),
limits = c(0, 1), name = "R²") +
theme_minimal(base_size = 16) +
theme(
axis.text.x = element_text(angle = 45, hjust = 1, size = 14, face = "bold", color = "black"),
axis.text.y = element_text(size = 14, face = "bold", color = "black"),
axis.title = element_text(size = 16, face = "bold"),
panel.grid = element_blank(), # No distracting grid lines
legend.position = "right",
legend.title = element_text(size = 14, face = "bold"),
legend.text = element_text(size = 12),
plot.title = element_text(size = 20, face = "bold", hjust = 0.5)
) +
labs(title = "Correlation of Contractile Cell Clusters (INTACT vs DKD)",
x = "DKD Clusters",
y = "INTACT Clusters")
p6## JWN Coding
# Define the desired order
cor_long$Var1 <- trimws(cor_long$Var1)
cor_long$Var2 <- trimws(cor_long$Var2)
# Convert Var1 and Var2 into ordered factors
cor_long$Var1 <- factor(cor_long$Var1, levels = c("Pericyte", "Efferent VSMC", "Afferent VSMC",
"Granular Cell", "EG Mesangial Cell", "IG Mesangial Cell"))
cor_long$Var2 <- factor(cor_long$Var2, levels = c("Pericyte", "Efferent VSMC", "Afferent VSMC",
"Granular Cell", "EG Mesangial Cell", "IG Mesangial Cell"))
# Plot
p6 <- ggplot(cor_long, aes(x = Var2, y = Var1, fill = value)) +
geom_tile(color = "white", size = 0.3) +
geom_text(aes(label = sprintf("%.2f", value)), size = 5, fontface = "bold",
color = ifelse(cor_long$value > 0.5, "white", "black")) +
scale_fill_gradientn(colors = rev(brewer.pal(9, "RdBu")),
limits = c(0, 1), name = "R²") +
theme_minimal(base_size = 16) +
theme(
axis.text.x = element_text(angle = 45, hjust = 1, size = 14, face = "bold", color = "black"),
axis.text.y = element_text(size = 14, face = "bold", color = "black"),
axis.title = element_text(size = 16, face = "bold"),
panel.grid = element_blank(),
legend.position = "right",
legend.title = element_text(size = 14, face = "bold"),
legend.text = element_text(size = 12),
plot.title = element_text(size = 20, face = "bold", hjust = 0.5)
) +
labs(title = "Correlation between INTACT vs DKD",
x = "DKD Clusters",
y = "INTACT Clusters") +
coord_fixed(ratio = .5)
p6## R version 4.3.1 (2023-06-16 ucrt)
## Platform: x86_64-w64-mingw32/x64 (64-bit)
## Running under: Windows 11 x64 (build 22631)
##
## Matrix products: default
##
##
## locale:
## [1] LC_COLLATE=English_United States.utf8
## [2] LC_CTYPE=English_United States.utf8
## [3] LC_MONETARY=English_United States.utf8
## [4] LC_NUMERIC=C
## [5] LC_TIME=English_United States.utf8
##
## time zone: America/Los_Angeles
## tzcode source: internal
##
## attached base packages:
## [1] grid stats graphics grDevices utils datasets methods
## [8] base
##
## other attached packages:
## [1] RColorBrewer_1.1-3 reshape2_1.4.4 corrplot_0.92
## [4] broom_1.0.5 ggrepel_0.9.5 ggvenn_0.1.10
## [7] gplots_3.2.0 gridExtra_2.3 sjmisc_2.8.9
## [10] openxlsx_4.2.5.2 lubridate_1.9.2 forcats_1.0.0
## [13] stringr_1.5.1 purrr_1.0.2 readr_2.1.5
## [16] tidyr_1.3.1 tibble_3.2.1 tidyverse_2.0.0
## [19] devtools_2.4.5 usethis_2.2.2 here_1.0.1
## [22] ggpmisc_0.5.4-1 ggpp_0.5.4 BiocManager_1.30.22
## [25] ggplot2_3.5.1 knitr_1.45 patchwork_1.2.0
## [28] SeuratObject_5.0.1 Seurat_4.4.0 dplyr_1.1.4
##
## loaded via a namespace (and not attached):
## [1] RcppAnnoy_0.0.22 splines_4.3.1 later_1.3.1
## [4] bitops_1.0-7 polyclip_1.10-6 lifecycle_1.0.4
## [7] rprojroot_2.0.4 globals_0.16.2 processx_3.8.2
## [10] lattice_0.21-8 MASS_7.3-60 insight_0.19.5
## [13] backports_1.4.1 magrittr_2.0.3 limma_3.56.2
## [16] plotly_4.10.4 sass_0.4.9 rmarkdown_2.25
## [19] jquerylib_0.1.4 yaml_2.3.7 remotes_2.5.0
## [22] httpuv_1.6.11 sctransform_0.4.1 spam_2.10-0
## [25] zip_2.3.0 sp_2.1-3 sessioninfo_1.2.2
## [28] pkgbuild_1.4.2 spatstat.sparse_3.0-3 reticulate_1.34.0
## [31] cowplot_1.1.3 pbapply_1.7-2 abind_1.4-5
## [34] pkgload_1.3.3 Rtsne_0.17 irlba_2.3.5.1
## [37] listenv_0.9.1 spatstat.utils_3.0-4 MatrixModels_0.5-3
## [40] goftest_1.2-3 spatstat.random_3.2-2 fitdistrplus_1.1-11
## [43] parallelly_1.36.0 leiden_0.4.3.1 codetools_0.2-19
## [46] tidyselect_1.2.1 farver_2.1.1 matrixStats_1.2.0
## [49] spatstat.explore_3.2-5 jsonlite_1.8.8 ellipsis_0.3.2
## [52] progressr_0.14.0 ggridges_0.5.6 survival_3.5-5
## [55] tools_4.3.1 ica_1.0-3 Rcpp_1.0.12
## [58] glue_1.8.0 mgcv_1.8-42 xfun_0.40
## [61] withr_3.0.2 fastmap_1.1.1 fansi_1.0.4
## [64] SparseM_1.81 caTools_1.18.2 callr_3.7.3
## [67] digest_0.6.33 timechange_0.2.0 R6_2.5.1
## [70] mime_0.12 colorspace_2.1-0 scattermore_1.2
## [73] gtools_3.9.5 tensor_1.5 spatstat.data_3.0-4
## [76] utf8_1.2.3 generics_0.1.3 data.table_1.14.10
## [79] prettyunits_1.2.0 httr_1.4.7 htmlwidgets_1.6.4
## [82] uwot_0.1.16 pkgconfig_2.0.3 gtable_0.3.6
## [85] lmtest_0.9-40 htmltools_0.5.8.1 profvis_0.3.8
## [88] dotCall64_1.1-1 scales_1.3.0 png_0.1-8
## [91] rstudioapi_0.15.0 tzdb_0.4.0 nlme_3.1-162
## [94] cachem_1.0.8 zoo_1.8-12 sjlabelled_1.2.0
## [97] KernSmooth_2.23-21 parallel_4.3.1 miniUI_0.1.1.1
## [100] pillar_1.9.0 vctrs_0.6.5 RANN_2.6.1
## [103] urlchecker_1.0.1 promises_1.2.1 xtable_1.8-4
## [106] cluster_2.1.4 evaluate_0.23 cli_3.6.1
## [109] compiler_4.3.1 rlang_1.1.5 crayon_1.5.2
## [112] future.apply_1.11.1 labeling_0.4.3 ps_1.7.5
## [115] plyr_1.8.9 fs_1.6.5 stringi_1.7.12
## [118] viridisLite_0.4.2 deldir_2.0-2 munsell_0.5.1
## [121] lazyeval_0.2.2 spatstat.geom_3.2-8 quantreg_5.97
## [124] Matrix_1.6-5 hms_1.1.3 future_1.33.1
## [127] shiny_1.8.0 highr_0.10 ROCR_1.0-11
## [130] igraph_1.6.0 memoise_2.0.1 bslib_0.8.0
## [133] polynom_1.4-1